package com.zhuiyun.project.api.friend.service;

import com.zhuiyun.project.api.addfriend.entity.AddFriend;
import com.zhuiyun.project.api.friend.entity.Friend;
import com.zhuiyun.project.api.friend.model.FriendModel;
import com.zhuiyun.project.common.response.CommonResult;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName FriendService
 * @Description TODO 好友 service
 * @Author kdj
 * @Date 2023/6/20 14:20
 **/
public interface FriendService {
    /**
     * @param friend
     * @Author kdj
     * @Description 添加的默认配置
     * @Date 2023/6/23 12:03
     * @Return com.zhuiyun.project.api.friend.entity.Friend
     */
    Friend addDefault(Friend friend);

    /**
     * @param name
     * @param userId
     * @Author kdj
     * @Description 根据name模糊查好友
     * @Date 2023/6/21 9:29
     * @Return com.zhuiyun.project.common.response.CommonResult
     */
    CommonResult getFriendByNameLike(String name, int userId);

    /**
     * @param userId
     * @Author kdj
     * @Description 根据好友id获取好友信息
     * @Date 2023/6/21 11:27
     * @Return com.zhuiyun.project.common.response.CommonResult
     */
    CommonResult getFriendByFriendUserId(int userId, int friendId);

    /**
     * @param addFriend
     * @Author kdj
     * @Description 添加Friend数据根据AddFriend数据
     * @Date 2023/6/23 11:59
     * @Return Boolean
     */
    Boolean addFriendByAddFriend(AddFriend addFriend);

    /**
     * @param userId
     * @param friendId
     * @Author kdj
     * @Description 判断好友关系是否存在
     * @Date 2023/6/29 10:34
     * @Return java.util.List<com.zhuiyun.project.api.friend.entity.Friend>
     */
    List<Friend> queryIsFriend(int userId, int friendId);

    /**
     * @param userId
     * @param friendId
     * @Author kdj
     * @Description 获取好友给本人的备注
     * @Date 2023/6/29 15:38
     * @Return String
     */
    String getUserRemarkName(int userId, int friendId);

    /**
     * @param userId
     * @param friendId
     * @Author kdj
     * @Description 获取本人给好友的备注
     * @Date 2023/6/29 15:42
     * @Return java.lang.String
     */
    String getFriendRemarkName(int userId, int friendId);

    /**
     * @param userId
     * @param friendId
     * @Author kdj
     * @Description 判断是否为朋友关系
     * @Date 2023/7/20 21:17
     * @Return com.zhuiyun.project.common.response.CommonResult
     */
    CommonResult isFriend(int userId, int friendId);

    /**
     * @param userId
     * @param friendId
     * @Author kdj
     * @Description 获取好友信息
     * @Date 2023/7/21 11:50
     * @Return com.zhuiyun.project.api.friend.entity.Friend
     */


    Friend getFriendInfo(int userId, int friendId);

    /**
     * @param fromId
     * @param toId
     * @Author kdj
     * @Description 删除好友
     * @Date 2023/7/21 14:15
     * @Return void
     */
    boolean delFriend(Integer fromId, Integer toId);


    /**
     * 单聊消息免打扰功能
     *
     * @return int
     * @author 温
     * @date 2023/7/23 19:39
     * @parameter [friend]
     */
    int updateMeted(Friend friend);



    /**
     * 修改给好友的备注
     *
     * @return int
     * @author 温
     * @date 2023/7/24 19:54
     * @parameter [friend]
     */
    int friendUpdate(Friend friend);

    /**
     * 获取好友列表
     *
     * @return java.util.List<com.zhuiyun.project.api.friend.model.FriendModel>
     * @author 温
     * @date 2023/7/27 20:57
     * @parameter [userId]
     */
    List<FriendModel> selectFriend(Friend friend);


/**
 * 获取群聊列表信息
 * @author 温
 * @date 2023/8/1 23:06
 * @parameter [userId, groupName, groupId]
 * @return java.util.List<com.zhuiyun.project.api.friend.model.FriendModel>
 */
    List<FriendModel>quancha(Integer userId, String groupName,Integer groupId);

}
